#include <opencv/cv.h>
#include <opencv/highgui.h>

#include <deque>

struct vec2d
{
	int x,y;
};

////////////////////////////////////////////////////////////////////////////////
// Mise en correspondances
////////////////////////////////////////////////////////////////////////////////

void getFLANN(const cv::Mat& desc1,
							const cv::Mat& desc2,
							cv::Mat_<int>& links,
							cv::Mat_<float>& dists,
							int precision);

////////////////////////////////////////////////////////////////////////////////
// Operations sur les points clefs
////////////////////////////////////////////////////////////////////////////////
//LABELISATIONS
void  cvLabelizeKeyspoints(cv::Mat_<float> & keyspoints,float radius);

//Labelisation du cube complet
void  cvLabelizeKeyspointsCubeST(std::deque<cv::Mat_<float> > & cube,float dtds,float radius);//<-- en cours de reflexion

//Labelisation de la derniere couche du cube cad elem 0 de cube
void  cvLabelizeKeyspointsCubeSTLast(std::deque<cv::Mat_<float> > & cube,float dtds,float radius);

//Tri
void cvKeyspointsOpening(cv::Mat_<float> & keyspoints,int density,float radius);

////////////////////////////////////////////////////////////////////////////////
//Autre
////////////////////////////////////////////////////////////////////////////////
void myvconcat(const cv::Mat_<float> & src, cv::Mat_<float> & des);
